/*******************************************************************************
* Copyright (c) 2005, 2017 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Tom Schindl - bug 151205
*******************************************************************************/
package org.eclipse.jface.tests.viewers;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
public class VirtualLazyTreeViewerTest extends TreeViewerTest {
protected int setDataCalls = 0;
public VirtualLazyTreeViewerTest(String name) {
super(name);
}
@Override
protected StructuredViewer createViewer(Composite parent) {
Tree tree = new Tree(parent, SWT.VIRTUAL);
tree.addListener(SWT.SetData, event -> setDataCalls++);
fTreeViewer = new TreeViewer(tree);
fTreeViewer.setContentProvider(new TestModelLazyTreeContentProvider((TreeViewer) fTreeViewer));
return fTreeViewer;
}
@Override
public void setUp() {
super.setUp();
// process events because the content provider uses an asyncExec to set the item count of the tree
processEvents();
}
@Override
protected void setInput() {
super.setInput();
}
@Override
public void tearDown() {
super.tearDown();
// System.out.println("calls: " + setDataCalls);
}
public void testLeafIsExpandable() {
TestElement leafElement = fRootElement.getChildAt(2).getChildAt(3).getChildAt(2);
assertEquals(0, leafElement.getChildCount());
assertFalse(fTreeViewer.isExpandable(leafElement));
}
public void testRootIsExpandable() {
TestElement rootElement = fRootElement.getChildAt(2);
assertTrue(rootElement.getChildCount() > 0);
assertTrue(fTreeViewer.isExpandable(rootElement));
}
public void testNodeIsExpandable() {
TestElement nodeElement = fRootElement.getChildAt(2).getChildAt(3);
assertTrue(nodeElement.getChildCount() > 0);
assertTrue(fTreeViewer.isExpandable(nodeElement));
}
@Override
public void testRefreshWithDuplicateChild() {
// Test leads to infinite loop. Duplicate children are a bad idea in virtual trees.
}
@Override
public void testSetExpandedWithCycle() {
// Test leads to infinite loop. Cycles are a bad idea in virtual trees.
}
@Override
public void testFilterExpanded() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testFilter() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testSetFilters() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testInsertSiblingWithFilterFiltered() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testInsertSiblingWithFilterNotFiltered() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testInsertSiblingWithSorter() {
// no need to test since virtual trees do not support sorting
}
@Override
public void testRenameWithFilter() {
// no need to test since virtual trees do not support filtering
}
@Override
public void testRenameWithSorter() {
// no need to test since virtual trees do not support sorting
}
@Override
public void testSorter() {
// no need to test since virtual trees do not support sorting
}
// Temporary overrides for bug 347491:
@Override
public void testRefreshWithAddedChildren() {
if (disableTestsBug347491) {
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testRefreshWithAddedChildren();
}
@Override
public void testDeleteSibling() {
if (disableTestsBug347491) {
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testDeleteSibling();
}
@Override
public void testExpandToLevel() {
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testExpandToLevel();
}
@Override
public void testInsertSibling() {
if (disableTestsBug347491) {
return;
}
if (disableTestsBug493357) {
System.out.println(getName() + " disabled due to Bug 493357");
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testInsertSibling();
}
@Override
public void testInsertSiblings() {
if (disableTestsBug347491) {
return;
}
if (disableTestsBug493357) {
System.out.println(getName() + " disabled due to Bug 493357");
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testInsertSiblings();
}
@Override
public void testSetInput() {
if (disableTestsBug347491) {
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testSetInput();
}
@Override
public void testSomeChildrenChanged() {
if (disableTestsBug347491) {
return;
}
if (disableTestsBug493357) {
System.out.println(getName() + " disabled due to Bug 493357");
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testSomeChildrenChanged();
}
@Override
public void testWorldChanged() {
if (disableTestsBug347491) {
return;
}
if (disableTestsBug493357) {
System.out.println(getName() + " disabled due to Bug 493357");
return;
}
if (setDataCalls == 0) {
System.err.println("SWT.SetData is not received. Cancelled test " + getName());
return;
}
super.testWorldChanged();
}
}